#ifndef BASIC_AT_H
#define BASIC_AT_H

// wifi模块的AT命令，基础部分

#include "wifi_includes.h"

// wifi模块的基础AT命令
#define WIFI_AT "AT\r\n"                          // 测试AT启动
#define WIFI_AT_RST "AT+RST\r\n"                  // 模块重启
#define WIFI_AT_GMR "AT+GMR\r\n"                  // 查看版本信息
#define WIFI_AT_GSLP "AT+GSLP="                   // 进入睡眠模式
#define WIFI_AT_ATE "ATE\r\n"                     // 开关回显功能
#define WIFI_AT_REST_ORE "AT+RESTORE\r\n"         // 恢复出厂设置
#define WIFI_AT_UART_CUR "AT+UART_CUR"            // 设置UART当前临时设置，不保存到Flash
#define WIFI_AT_UART_DEF "AT+UART_DEF"            // 设置默认串口参数,保存在flash
#define WIFI_AT_SLEEP "AT+SLEEP"                  // 设置睡眠模式
#define WIFI_AT_WAKE_UP_GPIO "AT+WAKEUPGPIO="     // 设置唤醒GPIO
#define WIFI_AT_RF_POWER "AT+RFPOWER="            // 设置RF TX Power上限
#define WIFI_AT_RF_VDD "AT+RFVDD"                 // 根据VOD33设置RF TX Power
#define WIFI_AT_SYS_RAM "AT+SYSRAM?\r\n"          // 查询系统当前剩余内存
#define WIFI_AT_SYS_ADC "AT+SYSADC?\r\n"          // 查询系统ADC值
#define WIFI_AT_SYS_IO_SET_CFG "AT+SYSIOSETCFG="  // 设置IO工作模式
#define WIFI_AT_SYS_IO_GET_CFG "AT+SYSIOGETCFG="  // 查询IO工作模式
#define WIFI_AT_SYS_GPIO_DIR "AT+SYSGPIODIR="     // 设置GPIO工作为输入或输出
#define WIFI_AT_SYS_GPIO_WRITE "AT+SYSGPIOWRITE=" // 设置GPIO输出电平
#define WIFI_AT_SYS_GPIO_READ "AT+SYSGPIOREAD="   // 读取GPIO电平
#define WIFI_AT_SYS_MSG_CUR "AT+SYSMSG_CUR="      // 设置当前系统消息
#define WIFI_AT_SYS_MSG_DEF "AT+SYSMSG_DEF="      // 设置默认系统消息

// 函数实现
void moduleGSleep(char *sleepTime);
void moduleUARTSet(char *baudRate, char *dataBits, char *stopBits, char *parity, char *flowControl, uint8_t cmdType, uint8_t saveType);
void moduleSleep(char *sleepTime, uint8_t cmdType);
void moduleWAKEUPGPIO(char *enable, char *trigger_GPIO, char *trigger_level, char *awake_GPIO, char *awake_level);
void moduleRFPOWER(char *tx_power);
void moduleRFVDD(char *vdd33, uint8_t cmdType);
void moduleSYSIOCFG(char *pin, char *mode, char *pull_up);
void moduleSYSIOGETCFG(char *pin);
void moduleSYSGPIODIR(char *pin, char *dir);
void moduleSYSGPIOWR(char *pin, char *level, uint8_t cmdType);
void moduleSYSMSG_CUR_DEF(char *n, uint8_t cmdType);

#endif